package com.xinnet.mms.dept.dao;

import java.sql.SQLException;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.xinnet.mms.entity.Customer;
import com.xinnet.mms.entity.Dept;
@Repository
public interface DeptDao {
	/**
	 * 获取部门列表
	 * @return List<Dept>
	 */
	public List<Dept> getDeptList();
	/**
	 * 添加部门
	 * @param dept
	 */
	public void addDept(Dept dept);
	/**
	 * 更新部门
	 * @param dept
	 */
	public void updateDept(Dept dept);
	/**
	 * 删除部门
	 * @param deptId
	 */
	public void delDeptById(String deptId);
	/**
	 * 根据部门名称获取部门
	 * @param deptName
	 * @return Dept
	 */
	public Dept getDeptByName(String deptName);
	/**
	 * 根据部门ID获取部门
	 * @param deptId
	 * @return Dept
	 */
	public Dept getDeptByDeptId(String deptId);
	
	/**
	 * 根据部门名称查看是否可以使用此部门名称:更新或添加部门时使用
	 * @param dname
	 * @return Dept
	 */
	public Dept isCanUseTheDeptName(String dname);
	
	public Dept getDeptByEmpNo(String empNo);
	/**
	 * 
	 * 功能描述：通过区域ID/产品CODE取得部门
	 * 
	 * @author 王湛智
	 * 
	 * @param customer
	 * @return
	 * @throws SQLException
	 */
	public Dept getDeptByProductCodeAndAreaId(Customer customer) throws SQLException;
	
	public List<Dept> getDeptListByDeptIdStr(String deptIdStr);
	/**
	 * 
	 *
	 * 功能描述：根据产品code 重置部门内所有员工的可分配标签
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年6月23日
	 *
	 */
	public void resetAllotLabelByProductCode(String productCode) throws SQLException;
	/**
	 * 
	 *
	 * 功能描述：添加部门子部门关系表记录
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年7月17日
	 *
	 */
	public void addDeptChildRelation(Dept dept) throws SQLException;
	/**
	 * 
	 *
	 * 功能描述：查询参数中子部门ID和部门ID在表中的个数
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年7月17日
	 *
	 */
	public Integer getDeptRelationByDeptnoAndChildId(Dept dept) throws SQLException;
	
	
	/**
	 * 
	 *
	 * 功能描述：查询公司名称
	 * 
	 * @author yanlvshui
	 *
	 * @throws 2014年8月11日
	 *
	 */
	public String getCompanyNameByCompId(String companyId) throws SQLException;
	
	/**
	 * 获取最低一级部门列表
	 * @return List<Dept>
	 */
	public List<Dept> getDeptByString();

}
